% Clase
\documentclass[12pt,a4paper,titlepage,spanish,twoside]{book}

% Órdenes auxiliares
\input{latex-func.tex}

% Encabezado y pie
\encabezado

\begin{document}

% Portada
\portada{Ingeniería del Software I}{Práctica 1: Desarrollo estructurado}
{GDRPI: Gestión Distribuída de la Revisión\\de Proyectos de Investigación}
{Sergio de la Rubia García-Carpintero\\Miguel Millán Sánchez-Grande\\Luis
  Muñoz Villarreal\\Alicia Serrano Sánchez\\Juan Miguel Torres Triviño}
{24 de Febrero del 2010}

% Licencia
\licencia{Sergio de la Rubia García-Carpintero, Miguel Millán Sánchez-Grande,
  Luis Muñoz Vi\-lla\-rre\-al, Alicia Serrano Sánchez, Juan Miguel Torres 
Triviño}

% Índice de contenido
\tableofcontents
\newpage

% Índice de figuras
\listoffigures

\chapter*{Prólogo}
El objetivo de la práctica es conocer y simular el ciclo de vida seguido
durante el desarrollo del software. Para ello se va a realizar un supuesto
práctico que incluye análisis de requisitos, diseño e implementación del
mismo. 

Dado que el enunciado fijado para la práctica no proporcionaba toda la
información necesaria para poder desarrollarla, se han realizado
una serie de entrevistas con el cliente para poder afianzar los requisitos
finales 
de la aplicación. Éstas reuniones son fundamentales para poder conseguir un
buen análisis e ir profundizando sobre las diferencias de las ideas del
cliente y las del equipo de síntesis y desarrollo del software, lo que hace
un paso imprescindible para un buen diseño y una buena
implementación.

Además, al tratarse de un proyecto en grupo, nos
proporcionará habilidades en nuestra formación como ingenieros al tener que
enfrentarnos a un importante aspecto de la vida real, el trabajo en
equipo. Esto tiene partes positivas y negativas, ya que al ser varios
miembros se han de poner en común distintos puntos de vista y llegar a un
acuerdo para poder proseguir con el desarrollo; pero también agiliza las
etapas, ya que se pueden repartir las diferentes tareas a realizar del
trabajo. 

Con la realización de esta práctica se pretende conocer y asimilar los
objetivos básicos de la ingeniería del software: 
\begin{itemize}
\item Los procesos del ciclo de vida software y sus diferentes formas de
  organización en distintos modelos del ciclo de vida.
\item Los conceptos y actividades fundamentales del análisis de requisitos,
  así como su importancia en el desarrollo y mantenimiento del software.
\item Los conceptos, técnicas y diagramas básicos del paradigma de desarrollo
  estructurado: desde el análisis a las pruebas y el despliegue
\item Un modelo de proceso de aplicación del paradigma estructurado, que
  incluya el proceso de análisis, diseño estructurado y estrategias de prueba.
\item Las posibilidades que ofrece la reutilización del software en todos los
  niveles de desarrollo.
\end{itemize}

\part{Análisis}
\chapter{Especificación de requisitos}
\section{Requisitos iniciales de sistema}
Se trata de desarrollar una aplicación para la gestión distribuída de la
revisión de proyectos de investigación (y otro tipo de solicitudes:
becas, acciones integradas, etc.). El sistema lo mantiene una agencia de
evaluación de proyectos, que básicamente se encarga de ofrecer una valoración
de los proyectos de investigación que le envían distintos organismos
(ministerios, comunidades autónomas, etc.). Existe un conjunto de áreas
temáticas, y cada área está compuesta en un conjunto de subáreas. Cada
área tiene un \emph{coordinadora}, que se encarga de asignar proyectos
a cada uno de los \emph{adjuntos} de cada subárea. El \emph{adjunto} se
encargará de
asignar la evaluación de sus proyectos a los expertos más adecuados y de,
finalmente, realizar los informes finales de evaluación. El sistema es
utilizado por los siguientes tipos de usuario: 

\begin{itemize}
\item Los \emph{expertos} realizan evaluaciones de proyectos. Reciben una 
  invitación, y ellos pueden aceptar o declinar. Si aceptan tiene un tiempo 
  determinado para enviar sus informes. 
\item Los \emph{adjuntos} realizan asignaciones a \emph{expertos}. También
  desasignan
  \emph{expertos} o insisten si el experto tarda demasiado. Una vez recibidos
  los 
  informes de los \emph{expertos}, realiza un único informe final, que es el
  que se 
  devuelve a la entidad solicitante, una vez validado por el
  \emph{coordinador} del área correspondiente.  
\item Los \emph{coordinadores} asignan proyectos a los \emph{adjuntos}, y
  realizan la supervisión de todos los informes. 
\item El \emph{secretario} de la agencia de evaluación carga en el sistema todos
  los documentos de los proyectos (memoria del proyecto, currículum de los
  investigadores, texto de la convocatoria, etc.). 
\end{itemize}

\section{Análisis de requisitos del sistema}
Tras una serie de reuniones, los requisitos finales para nuestro sistema son
los siguientes: 

\subsection{Usuarios}
\begin{itemize}
\item Acceden al sistema mediante un identificador, que será el dni; y una 
contraseña, que se podrá modificar.
\item Hay cuatro tipos: secretario, coordinador, adjunto y experto. Cada uno
  con diferente funcionalidad y rango. 
\item Cada usuario podrá modificar sus datos personales y tendrá una vista
  restringida sobre la lista de proyectos dependiendo de su rango en el 
  sistema.
\end{itemize}

\subsection{Paquete de proyectos}
Las instituciones solicitantes mandan los proyectos en paquetes al
secretario, los cuales contienen: 
\begin{itemize}
\item La convocatoria, que describe no o varios modelos de informe de
  evaluación que contienen los puntos a evaluar del correspondiente proyecto.
\item Las bases del proyecto.
\item La institución convocante.
\item Los proyectos, que pueden venir, aunque no necesariamente, clasificados
  por área. 
\item Cada proyecto tendrá una fecha límite de evaluación.
\end{itemize}

\subsection{Secretario}
El secretario podrá realizar distintas funciones respecto a:
\begin{description}
\item[Usuarios] Es el encargado de añadir, modificar y eliminar 
  usuarios del sistema (coordinadores, adjuntos y expertos).
\item[Coordinadores] Elegirá el coordinador de cada área.
\item[Paquetes de proyecto] Recibe las solicitudes de evaluación de proyectos
  y los introduce al sistema(las bases, la convocatoria, la institución
  convocante, los proyectos, el cual asignará al área correspondiente...). 
  También podrá modificar cualquier información referente a estas
  solicitudes. 
\item[Modelos de evaluación] Dependiendo de la información que contenga el
  proyecto, elaborará unos modelos de informe de evaluación. 
\item[Plazos expertos] Decidirá los plazos que tienen los expertos para
  aceptar o declinar la invitación para realizar el informe de evaluación,
  y una vez aceptada, la fecha para entregar dicho informe.
\end{description}

\subsection{Coordinador}
\begin{itemize}
\item Pertenece a una única área.
\item Establece las subáreas de los proyectos que se le asignan.
\item Dentro de su área asigna un adjunto a cada subárea.
\item Reasigna un proyecto a otra subárea, si el adjunto se lo indica.
\item Valida los informes pendientes que los adjuntos de su correspondiente 
  área realizan.
\end{itemize}

\subsection{Área}
\begin{itemize}
\item Está asociada a un único coordinador y tiene, a su vez, varias subáreas. 
\item El número de subáreas podrá ser diferente en cada área.
\end{itemize}

\subsection{Adjunto}
\begin{itemize}
\item Pertenece únicamente a una subárea.
\item Tiene una serie de proyectos asignados.
\item Busca a los expertos especificando el área, la institución, palabras
  clave y valoraciones en las que se prioriza la formalidad de plazos y
  calidad de las evaluaciones. 
\item Una vez finalizada la búsqueda, elige a uno o más expertos según
  considere necesario y les envia un modelo de invitación predeterminada
  mediante correo electrónico para la  evaluación del proyecto.  
\item Avisa de los plazos que tiene el experto para aceptar o declinar una
  invitación según definió el secretario. Además, una vez aceptada dicha
  invitación, le avisa de los plazos de entrega del informe de evaluación,
  también definidos por el secretario. 
\item Puede reasignar las evaluaciones si el experto declina la invitación,
  no obtiene contestación dentro del plazo o si el experto no cumple con los
  plazos de entrega del informe de evaluación.
\item El adjunto puede insistir a los expertos correspondientes cuando esté
  próxima la fecha límite de entrega del informe de evaluación.
\item Una vez realizada las evaluaciones de los expertos, el adjunto
  realiza un informe final teniendo en cuenta los informes de los distintos
  expertos que hayan aceptado realizar la evaluación. Este informe final
  debe ser validado por el coordinador de su área. 
\item Evalúa el trabajo del experto basándose en la formalidad de los plazos
  y la calidad de su informe. 
\item Puede recomendar al secretario añadir expertos.
\item Dentro de la lista de proyectos a las que los adjuntos tienen acceso,
  tiene una sublista de los expertos que están revisando ese proyecto. 
\item Puede avisar al coordinador cuando el proyecto no corresponda a su
  subárea. 
\end{itemize}

\subsection{Subárea}
\begin{itemize}
\item Sólo puede pertenecer a un área y tiene un único adjunto asociado.
\end{itemize}

\subsection{Expertos}
\begin{itemize}
\item Pueden tener asignados varios proyectos a la vez. 
\item No pueden pertenecer a la misma institución solicitante de la evaluación.
\item Pueden aceptar o declinar las invitaciones de evaluación de proyectos.
\item Cuando acepte la invitación, pueden acceder a la documentación de ese
  proyecto e ir realizando progresivamente el informe en varias sesiones. 
\item Una vez que terminen el informe finalizan el proceso de evaluación.
\item Reciben avisos de finalización de plazos por parte del adjunto para
  finalizar el informe, vía correo electrónico.
\item Cada uno tiene una serie de palabras clave asociadas a su
  temática. Éstas palabras clave se utilizan como parámetros en las
  búsquedas. 
\item Tienen una lista de evaluaciones pendientes, que pueden aceptar o 
  re\-cha\-zar.
\end{itemize}

\chapter{Diagrama de flujo de datos}
Con un diagrama de flujo de datos, se puede visualizar la forma en que el 
sistema funciona, lo que el sistema va a lograr, y cómo el sistema se puede 
poner en práctica. Los diagramas de flujo de datos pueden ser usados para 
proporcionar al usuario final una idea aproximada de cómo será y actuará la
estructura de todo el sistema. La manera en que cualquier sistema se
desarrolla puede determinarse a través de un diagrama de flujo de
datos. \cite{piat}

\newpage
\imagen{diagramas/DC.pdf}{14cm}{Diagrama de Contexto}{dc}{H}

\imagen{diagramas/DFD0.pdf}{14cm}{Diagrama de Sistemas}{df0}{H}

\imagen{diagramas/DFD1.pdf}{14cm}{Gestión de Usuarios}{df1}{H}

\imagen{diagramas/DFD2.pdf}{14cm}{Gestión de Paquetes Proyectos}{df2}{H}

\imagen{diagramas/DFD3.pdf}{14cm}{Gestión de Evaluaciones}{df3}{H}

\imagen{diagramas/DFD31.pdf}{14cm}{Gestión de Modelos}{df31}{H}

\imagen{diagramas/DFD32.pdf}{14cm}{Gestión de Informes Evaluaciones}{df32}{H}

\imagen{diagramas/DFD4.pdf}{14cm}{Gestión de Expertos}{df4}{H}

\chapter{Diccionario de datos}
\section{Almacenes de datos}
\begin{description}
\item[USUARIOS] = @id\_usuario + tipo + e-mail + contraseña + nombre +
  apellidos + teléfono + id\_área + institución + currículum +
  palabras\_clave 

\item[PAQUETES PROYECTOS] = @id\_paquete + nombre\_paquete + institución +
  bases + convocatoria + fecha\_entrada + fecha\_salida + fecha\_límite 

\item[fecha\_entrada] = fecha\_salida = fecha\_límite = día + mes + año

\item[MODELOS EVALUACIÓN] = @id\_modelo + cppid + estructura

\item[cppid] = *\emph{Identificador de la convocatoria del paquete de
    proyectos co\-rres\-pon\-dien\-te}* 

\item[ÁREAS] = @id\_área + nombre

\item[SUBÁREAS] = @id\_subárea + @id\_área + id\_usuario + nombre

\item[SUBÁREAS] = *\emph{El id\_usuario es sólo para los adjuntos. El resto
    de u\-sua\-rios no tiene área asignada}* 

\item[PROYECTOS] = @id\_proyecto + @id\_paquete + nombre\_proyecto + memoria
  + id\_área + id\_subárea + estado\_proyecto + tpo\_inv + tpo\_eval +
  id\_modelo\_eval + evaluación 

\item[tpo\_inv] = *\emph{Tiempo que tiene un experto para aceptar o declinar
    una invitación}* 

\item[tpo\_eval] = *\emph{Tiempo que tiene un experto para realizar una
    evaluación desde su aceptación}* 

\item[evaluación] = *\emph{Informe final realizado}*

\item[EXPERTOS-PROYECTOS] = @id\_usuario + @id\_paqproy + @id\_proyecto +
  id\_informe + valoración + fecha\_asignación 

\item[valoración] = tpo\_realización + calidad\_informe

\item[fecha\_asignación] = día + mes + año

\item[tpo\_realización] = nota

\item[calidad\_informe] = nota

\item[INFORMES EVALUACIÓN] = @id\_informe + id\_modelo\_eval +
  estado\_informe + datos 

\item[datos] = *\emph{El experto, el adjunto y el coordinador rellenan los
    campos co\-rres\-pon\-dien\-tes al modelo de evaluación del proyecto}* 

\item[PLANTILLAS CORREOS] = @id\_plantilla + asunto + cuerpo
\end{description}

\section{Datos elementales}
\begin{description}
\item[tipo] = [secretario $\mid$ coordinador $\mid$ adjunto $\mid$ experto]

\item[dígito] = [0 $\mid$ 1 $\mid$ 2 $\mid$ 3 $\mid$ 4 $\mid$ 5 $\mid$ 6
  $\mid$ 7 $\mid$ 8 $\mid$ 9] 

\item[día] = [1 $\mid$ 2 $\mid$ 3 $\mid$ 4 $\mid$ 5 $\mid$ 6 $\mid$ 7 $\mid$
  8 $\mid$ 9 $\mid$ 10 $\mid$ 11 $\mid$ 12 $\mid$ 13 $\mid$ 14 $\mid$ 15
  $\mid$ 16 $\mid$ 17 $\mid$ 18 $\mid$ 19 $\mid$ 20 $\mid$ 21 $\mid$ 22
  $\mid$ 23 $\mid$ 24 $\mid$ 25 $\mid$ 26 $\mid$ 27 $\mid$ 28 $\mid$ 29
  $\mid$ 30 $\mid$ 31] 

\item[mes] = [Enero $\mid$ Febrero $\mid$ Marzo $\mid$ Abril $\mid$ Mayo
  $\mid$ Junio $\mid$ Julio $\mid$ Agosto $\mid$ Septiembre $\mid$ Octubre
  $\mid$ Noviembre $\mid$ Diciembre] 

\item[nota] = [0 $\mid$ 1 $\mid$ 2 $\mid$ 3 $\mid$ 4 $\mid$ 5 $\mid$ 6 $\mid$
  7 $\mid$ 8 $\mid$ 9 $\mid$ 10] 

\item[año] = 2 + dígito + dígito + dígito

\item[estado\_proyecto] = [sin\_evaluar $\mid$ expertos\_evaluando $\mid$
  evaluado\_por\_expertos $\mid$ evaluado\_por\_adjunto $\mid$
  validado\_coodinador] 

\item[estado\_informe] = [en\_proceso $\mid$ finalizado]

\item[asunto] = [alta\_usuario $\mid$ invitación $\mid$ aviso\_plazos]
\end{description}

\section{Flujos de datos}
\begin{description}
\item[Aceptación] = *\emph{En el perfil del adjunto aparece la lista de
    expertos seleccionados y se indica si han aceptado o declinado}* 

\item[Actualización Estado] = [evaluado\_por\_expertos $\mid$
  evaluado\_por\_adjunto $\mid$ validado\_coodinador] 

\item[Adjuntos] = [Consulta Subárea $\mid$ Asignar Subárea]

\item[Adjuntos] = *\emph{Los usuarios adjuntos añadidos se asignan a una
    subárea. Se escribe en la tabla SUBÁREAS}* 
 
\item[Alta Usuario] = id\_usuario + tipo + e-mail + contraseña

\item[Alta Usuario] = *\emph{El secretario da de alta a los usuarios
    introduciendo su identificador, el tipo de usuario, el e-mail y la
    contraseña}* 

\item[Área] = id\_área + nombre

\item[Área] = *\emph{Los usuarios añadidos se asignan a un área}*

\item[Área Asignada] = id\_área

\item[Área Asignada] = *\emph{Se le añade un área a cada proyecto}*

\item[Área Proyectos] = id\_área + id\_paqproy + id\_proyecto

\item[Área Proyectos] = *\emph{Asignación de un área a un proyecto}*

\item[Asignar Subárea] = id\_subárea + id\_área + id\_usuario + nombre\_subárea.

\item[Asignar Subárea] = *\emph{Se introduce una fila nueva en la tabla
    SUBÁREAS}* 

\item[Autentificación] = [Datos Autentificación $\mid$ Verificar Autentificar]

\item[Autentificación] = *\emph{Acceso al sistema con una cuenta de usuario y
    verificación de la autentificación}* 

\item[Avisos Plazos] = nombre + apellidos + [tpo\_inv $\mid$ tpo\_eval] +
  id\_proyecto + id\_paquete + nombre\_proyecto + cuerpo 

\item[Avisos Plazos] = *\emph{Correo de advertencia de fecha límite de
    evaluación de un proyecto}* 

\item[Cambio Estado] = estado\_proyecto

\item[Cambio Estado] = *\emph{El estado del proyecto cambia de 'sin\_evaluar'
    a 'expertos\_evaluando'}* 

\item[Consulta Área Proyecto] = área

\item[Consulta Área Proyecto] = *\emph{Se extrae el área del proyecto para
    buscar expertos relacionados con ese área}* 

\item[Consulta Autentificación] = e-mail + contraseña

\item[Consulta Expertos] = [Expertos Seleccionados $\mid$ Expertos Búsqueda
  $\mid$ email] 

\item[Consulta Informes Expertos] = id\_informe + id\_modelo\_eval +
  estado\_in\-for\-me + datos 

\item[Consulta Informes Expertos] = *\emph{Ver informes de proyectos de
    expertos}* 

\item[Consulta Subárea] = id\_subárea + id\_área + (id\_usuario) + nombre

\item[Consulta Subárea] = *\emph{Consulta de las subáreas donde trabaja el
    usuario, el id\_usuario es opcional ya que el flujo consultar usuario que
    va desde modificar datos personales a Subáreas no utiliza el id\_usuario,
    sino que lee para asignarle un subárea}* 

\item[Consulta Usuarios] = id\_usuario + tipo + e-mail + contraseña + nombre
  + apellidos, teléfono + id\_área + institución + currículum +
  pa\-la\-bras\_clave 

\item[Convocatoria] = convocatoria

\item[convocatoria]: *\emph{En la convocatoria del paquete de proyectos
    encontramos todo lo necerario para realizar los Modelos de Evaluación}* 

\item[Correo Alta] = id\_usuario + contraseña + nombre + apellidos + área +
  cuerpo 

\item[Correo Alta] = *\emph{Correo de confirmación de registro de un nuevo
    usuario en el sistema}* 

\item[Criterios Evaluación] = [id\_modelo + estructura $\mid$ ID Modelo]

\item[Criterios Evaluación] = *\emph{Añadir, modificar o eliminar los modelos
    de e\-va\-lua\-ción a utilizar para realizar los informes}* 

\item[Datos Autentificación] = id\_usuario + contraseña

\item[Datos Paquetes Proyectos] = (id\_paquete) + (institución) + (bases) +
  (convocatoria) + (fecha\_entrada) + (fecha\_salida) + (fecha\_límite) 

\item[Datos Paquetes Proyectos] = *\emph{Se añaden, modifican y consultan los
    datos de los paquetes de proyectos}* 

\item[Datos Personales] = id\_usuario + tipo + e-mail + contraseña + nombre +
  apellidos + teléfono + área + institución + currículum + palabras\_clave 

\item[Datos Personales] = *\emph{Modificación de los datos personales de un
    usuario}* 

\item[Datos Proyectos] = (id\_proyecto) + (id\_paquete) + (memoria) + (área)
  + (subárea) + (estado\_proyecto) + (tpo\_inv) + (tpo\_eval) +
  (id\_modelo\_eval) + (evaluación) 

\item[Datos Proyectos] = *\emph{Se añaden, se modifican y se consultan los
    datos de los proyectos. Son todos opcionales por el flujo de datos en la
    modificación}* 

\item[Datos Usuarios] = id\_usuario

\item[Datos Usuarios] = *\emph{Se le pasa el id del usuario para eliminarlo
    de la base de datos}* 

\item[email] = *\emph{Se extrae el email de los expertos para mandarles la
    invitación}* 

\item[Evaluaciones] = id\_paquete + {evaluación}

\item[Evaluaciones] = *\emph{Evaluaciones correspondientes a los proyectos de
    un paquete y que son enviadas a la institución convocante una vez que
    estén realizadas}* 

\item[Experto Desasignado] = id\_usuario + id\_proyecto + id\_paquete

\item[Expertos] = [Parámetros Consulta $\mid$ Resultado Consulta $\mid$
  Parámetros Búsqueda $\mid$ Resultado Búsqueda $\mid$ ID Experto $\mid$
  Experto Desasignado] 

\item[Expertos] = *\emph{Tráfico relacionado con la búsqueda, consulta,
    asignación y desasignación de expertos para las evaluaciones de
    proyectos}* 

\item[Expertos Búsqueda] = {id\_usuario + tipo + e-mail + contraseña +
    nombre + apellidos + teléfono + área + institución + currículum +
    {pa\-la\-bras\_clave}} 

\item[Expertos Búsqueda] = *\emph{Lista de expertos resultado de la
    consulta}* 

\item[Expertos Seleccionados] = {id\_usuario + tipo + e-mail + contraseña +
    nombre + apellidos + teléfono + área + institución + currículum +
    {palabras\_clave}} 

\item[Expertos Seleccionados] = *\emph{Lista de expertos resultado de la
    consulta}* 

\item[Expertos-Proyectos] = [Relación Expertos-Proyectos $\mid$ Valoración
  Expertos $\mid$ Fin Relación $\mid$ Fecha Asignación $\mid$ Nueva Relación
  $\mid$ Valoración Trabajo] 

\item[Fecha Asignación] = fecha\_asignación

\item[Fecha Asignación] = *\emph{Se utiliza para el aviso de plazos}*

\item[Fecha límite] = fecha\_límite

\item[Fecha límite] = *\emph{Se utiliza para indicar el plazo de realización
    del informe al experto}* 

\item[Fin Relación] = id\_usuario + id\_proyecto + id\_paquete

\item[Fin Relación] = *\emph{Se elimina una tupla de la tabla
    EXPERTOS-PROYECTOS}* 

\item[ID Experto] = id\_usuario

\item[ID Modelo] = id\_modelo

\item[Info Informe Evaluación] = [Informe Rechazado $\mid$ Nuevo Informe]

\item[Info Paquetes Proyectos] = [Institución Convocante $\mid$ Fecha límite
  $\mid$ Plazo invitación] 

\item[Información Proyecto] = [Tiempos $\mid$ Consulta Área Proyecto $\mid$
  Cambio Estado $\mid$ Nombre Proyecto] 

\item[Informe Final] = id\_proyecto + id\_paquete + estado\_proyecto +
  evaluación 

\item[Informe Final] = *\emph{Se muestran los datos referidos a los informes
    finales de los proyectos y también el coordinador introduce el informe
    final de evaluación del proyecto una vez finalizado este para ser
    devuelto a la institución convocante}* 

\item[Informe Rechazado] = id\_informe

\item[Informe Rechazado] = *\emph{Se elimina la tupla correspondiente en la
    tabla INFORMES EVALUACIÓN}* 

\item[Informes Adjuntos] = id\_informe + id\_modelo\_eval + estado\_informe +
  datos 

\item[Informes Adjuntos] = *\emph{Ve y/o modifica el informe final de
    evaluación de un adjunto}* 

\item[Informes Coordinadores] = id\_informe + id\_modelo\_eval +
  estado\_informe + datos 

\item[Informes Coordinadores] = *\emph{Validar o modificar informe final del
    adjunto}* 

\item[Informes Evaluación] = id\_informe + id\_modelo\_eval + estado\_informe
  + datos 

\item[Informes Evaluación] = *\emph{Introducir, mostrar, modificar o eliminar
    los datos referidos a un informe de evaluación. Además modifica, cuando
    es oportuno, el estado en el que se encuentra dicho informe}* 

\item[Informes Expertos] = id\_informe + id\_modelo\_eval + estado\_informe +
  datos 

\item[Informes Expertos] = *\emph{Añadir o modificar informes de proyectos
    por parte de los expertos}* 

\item[Institución Convocante] = institución

\item[Institución Convocante] = *\emph{Se consulta la institución convocante
    para que no coincida en la búsqueda de expertos}* 

\item[Invitación] = [Petición $\mid$ Aceptación]

\item[Invitación] = *\emph{Correo de invitación a un experto para que evalúe
    un proyecto y respuesta de éste}* 

\item[Lista Usuarios] = {id\_usuario + tipo + e-mail + contraseña + nombre +
    apellidos + teléfono + área + institución + currículum +
    {palabras\_clave}} 

\item[Lista Usuarios] = *\emph{Lista devuelta por una búsqueda o consulta de
    usuarios}* 

\item[Memoria Proyecto] = id\_proyecto + id\_paquete + memoria +
  id\_modelo\_eval + estado\_proyecto 

\item[Memoria Proyecto] = *\emph{Se lee para poder realizar el informe. El
    adjunto también lee el estado en que se encuentra la evaluación del
    proyecto}* 

\item[Modelo] = id\_modelo\_eval

\item[Modelo] = *\emph{Se consulta el id del modelo de evaluación para poder
    asignárselo a los proyectos y también se consulta por si se quiere hacer
    un cambio en paquetes de proyectos}* 

\item[Modelos Evaluación] = [id\_modelo + estructura $\mid$ Nuevo Modelo
  Evaluación $\mid$ id\_modelo] 

\item[Modelos Evaluación] = *\emph{Insertar, modificar o eliminar las
    estructuras que deben seguir los informes de evaluación de cada
    proyecto}* 

\item[Nombre Proyecto] = id\_proyecto + nombre

\item[Nueva Relación] = id\_usuario + id\_proyecto + id\_paquete +
  id\_informe + valoración + fecha\_asignación 

\item[Nueva Relación] = *\emph{Se inserta una tupla en la tabla
    EXPERTOS-PROYECTOS}* 

\item[Nuevo Informe] = id\_informe + id\_modelo\_eval + estado\_informe + datos

\item[Nuevo Informe] = *\emph{Se inserta una tupla en la tabla INFORMES
    EVALUACIÓN. El estado\_informe será 'en\_proceso'}* 

\item[Nuevo Modelo Evaluación] = id\_modelo + estructura

\item[Nuevo Modelo Evaluación] = *\emph{Añade un nuevo Modelo de Evaluación}*

\item[Paquetes Proyectos] = [id\_paquete + institución + nº\_de\_proyectos +
  bases + convocatoria + fecha\_entrada + fecha\_salida + fecha\_límite
  $\mid$ Proyectos] 

\item[Paquetes Proyectos] = *\emph{Paquetes de proyectos enviados por la
    institución convocante para su evaluación}* 

\item[Parámetros] = (id\_usuario) + (tipo) + (e-mail) + (nombre) +
  (apellidos) + (teléfono) + (área) + (institución) + (currículum) +
  (palabras\_clave) 

\item[Parámetros] = *\emph{Son los parámetros de búsqueda de usuarios. Todos
    los campos con opcionales ya que se pueden realizar búsquedas de usuarios
    de varias maneras}* 

\item[Parámetros Consulta] = Parámetros Búsqueda = (id\_usuario) + (tipo) +
  (e-mail) + (contraseña) + (nombre) + (apellidos) + (teléfono) + (área) +
  (institución) + (currículum) + (palabras\_clave) 

\item[Petición] = id\_usuario + nombre + apellidos + id\_proyecto +
  nombre\_proyecto + tmp\_invitación + Correo\_invitación 

\item[Plantilla] = id\_plantilla + asunto + cuerpo.

\item[Plantilla] = *\emph{Para mandar los correos pertinentes}*

\item[Plazo Invitación] = tmp\_invitación

\item[Proyecto Rechazado] = id\_proyecto + id\_paquete + id\_subárea

\item[Proyecto Rechazado] = *\emph{Aviso del adjunto al coordinador de su
    área para informar de que el proyecto no corresponde a su subárea y debe,
    por tanto, asignarse a otro subárea distinta}* 

\item[Proyectos] = id\_proyecto + id\_paquete + nombre\_proyecto + memoria +
  área + subárea + estado\_proyecto + tpo\_inv + tpo\_eval + id\_modelo\_eval
  + evaluación 

\item[Proyectos] = *\emph{Consulta la memoria del proyecto para realizar el
    informe de evaluación}* 

\item[Relación Expertos-Proyectos] = {id\_usuario + id\_proyecto +
    id\_paquete + id\_informe + valoración + fecha\_asignación} 

\item[Relación Expertos-Proyectos] = *\emph{Lista de la relación entre
    Expertos y Proyectos. Se devolverá una lista según los parámetros de
    consulta}* 

\item[Resultado Consulta] = Resultado Búsqueda = {id\_usuario + tipo +
    e-mail + contraseña + nombre + apellidos + teléfono + área + institución
    + currículum + {palabras\_clave}} 

\item[Subárea Adjuntos] = id\_subárea + id\_usuario

\item[Subárea Adjuntos] = *\emph{Asignación de un adjunto a una subárea}*

\item[Subárea Asignada] = id\_subárea

\item[Subárea Asignada] = *\emph{Se le añade un subárea a cada proyecto}*

\item[Subárea Proyectos] = id\_subárea + id\_proyecto + id\_paquete

\item[Subárea Proyectos] = *\emph{Asignación de un proyecto a una subárea}*

\item[Tiempos] = tpo\_eval

\item[Tiempos] = *\emph{Se consulta el tiempo de evaluación para saber cuanto
    le queda al experto para realizar el informe}* 

\item[Usuarios] = [id\_usuario + tipo + e-mail + contraseña + (nombre) +
  (a\-pe\-lli\-dos) + (teléfono) + (área) + (institución) + (currículum) +
  (pa\-la\-bras\_clave) $\mid$ Parámetros] 

\item[Usuarios] = *\emph{Da el alta a los usuarios, los consulta o modifica
    sus datos. Modifica el coordinador asociado a un área. Incluye los
    parámetros de búsqueda introducidos para realizar dicha búsqueda de
    usuarios}* 

\item[Valoración Expertos] = id\_usuario + id\_proyecto + id\_paquete +
  tpo\_re\-a\-li\-za\-ción + ca\-li\-dad\_informe 

\item[Valoración Expertos] = *\emph{Cada informe elaborado por un experto
    para un proyecto, recibe una valoración según el tiempo de realización
    y la calidad del informe}* 

\item[Valoración trabajo] = {tpo\_realización + calidad\_informe}

\item[Valoración trabajo] = *\emph{Se utiliza en búsqueda de expertos}*

\item[Verificar Autentificar] = *\emph{Mostrar que la autentificación es
    correcta. Si introduce incorrectamente el id o la contraseña o ambas, se
    muestra una plantalla en la que se indica: 'Usuario o contraseña son
    incorrectas'}* 
\end{description}


\chapter{Especificación de procesos}
\section{Gestión de usuarios}
\subsection{Listado de usuarios}
En este proceso se introducen parámetros de consulta. Estos parámetros 
puede ser introducidos directa o indirectamente por el usuario. Dependiendo de 
quién realice la consulta, el sistema proporciona el acceso a unos datos u
otros. Al realizar esta consulta, el proceso consulta los almacenes de datos
SUBÁREAS y USUARIOS, ya que devuelve los datos organizados según la subárea
en que trabajen dichos usuarios del sistema. La relación jerárquica del
sistema estipula a qué información tiene acceso cada usuario:

\begin{description}
\item[Secretario] puede ver todos los datos.
\item[Coordinador] puede ver todos los adjuntos de su Área y todos los
  expertos.
\item[Adjunto] puede acceder a los expertos.
\item[Expertos] no tienen información de acceso de ningún otro usuario del 
sistema.
\end{description}

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps1.1}

\subsection{Añadir usuarios}
Este proceso es exclusivo para el secretario, ya que es el único con
pri\-vi\-le\-gios para introducir nuevos usuarios en el sistema. El sistema
recibe 
una nueva instancia de usuario y devuelve un correo de alta siguiendo un
modelo predefinido.

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps1.2}

\subsection{Modificar usuario}
Es el encargado de alterar todos los datos profesionales de los usuarios, es
exclusivo del secretario y del coordinador. El coordinador tiene la opción de
elegir a sus adjuntos de entre los expertos ya existentes y el secretario se
encarga de asignar expertos nuevos a subáreas y de elegir a los coordinadores
de entre los adjuntos y expertos existentes. Al invocar este proceso se
introduce el usuario que se quiere modificar y de entre todas las subáreas
posibles se selecciona una en función de las aptitudes del usuario. 

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps1.3}

\subsection{Eliminar usuarios}
Se encarga de eliminar instancias de usuarios del sistema en el almacén 
USUARIOS. Sólo el secretario tiene privilegios para ejecutar este proceso. 

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps1.4}

\subsection{Autentificar usuarios}
Es el proceso que se ejecuta al inicio de cada sesión de usuario. Se encarga
de verificar que el nombre de usuario y su contraseña son correctos.

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps1.5}

\subsection{Modificar datos personales}
Una vez que el usuario recibe el correo de alta, se utilizar este proceso para 
introducir sus datos personales para que el sistema tenga una ficha de cada 
empleado. Este proceso es accesible en todo momento para poder modificar 
cualquier dato o error.

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps1.6}

\section{Gestión de paquetes de proyectos}

\subsection{Consulta de paquetes de proyecto/proyectos}
Este proceso se utiliza tanto para listar los proyectos como para consultar la 
convocatoria de los paquetes de proyectos.

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps2.1}

\subsection{Añadir paquete de proyecto/proyectos}
Se encarga de introducir los paquetes de proyectos en el sistema. A partir de 
estos paquetes y leyendo el modelo de evaluación, el proceso se encarga de 
introducir todos los proyectos en el sistema.

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps2.2}

\subsection{Modificar paquete de proyecto/proyectos}
Es el encargado de realizar cualquier variación sobre los paquetes de proyecto y
sobre los proyectos, ya sea cambiar algún error descubierto o cambiar un 
proyecto de subárea a petición de algún adjunto. Se tienen di\-fe\-ren\-tes
opciones dependiendo de qué usuario invoque dicho proceso, ya que el
secretario asigna el área a los proyectos, el coordinador la subárea y el
adjunto puede rechazarlo alegando que ese proyecto no pertenece realmente a
su subárea.

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps2.3}

\section{Gestión de evaluaciones}

\subsection{Añadir modelo de evaluación}
Este proceso es exclusivo del secretario, que lee los datos de la convocatoria 
del paquete de proyectos para poder generar un modelo de evaluación.

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps3.1.1}

\subsection{Modificar modelo de evaluación}
Se complementa con el proceso ``Añadir Modelo de Evaluación''. Si se encuentra 
algún error en el modelo o cambian los prerrequisitos sobre algún proyecto,  
cambiará consecuentemente el modelo de evaluación de dicho proyecto.

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps3.1.2}

\subsection{Consulta de Informes}
Se devuelve una serie de informes de evaluación restringidos por quién los pide.
Todo usuario que haga una petición sobre la lectura de los informes tiene 
acceso a los suyos y a los que hayan sido escritos por los usuarios que estén 
debajo en la jerarquía de la empresa.
\begin{itemize}
\item[Experto] sólo puede tener acceso a su propio informe.
\item[Adjunto] puede consultar su propio informe y el de todos los expertos que 
tengan asignado un proyecto de su subárea.
\item[Coordinador] tiene acceso a su propio informe, al de los adjuntos y al de 
los expertos.
\end{itemize}

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps3.2.1}

\subsection{Realizar informe}
Proceso mediante el cual todos los usuarios pueden escribir y editar sus propios
informes. Se leen datos de los almacenes PROYECTOS y MODELOS DE EVALUACIÓN para 
saber qué evaluar y cómo evaluarlos. Casi todas las llamadas a este proceso son 
de lectura y escritura. En cuanto al acceso de datos, por lo general, cada 
usuario sólo puede editar sus propios informes. Los informes de adjuntos y 
coordinadores se pueden basar en informes de evaluación escritos con 
anterioridad para realizar el suyo propio.

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps3.2.2}

\subsection{Devolver evaluaciones}
Este proceso se encarga de recopilar todas las evaluaciones pertenecientes a un 
mismo paquete de proyectos y entregarlas al la institución convocante.

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps3.2.3}

\section{Gestión de expertos}

\subsection{Consulta expertos}
Consulta sobre los expertos del sistema. Se introducen una serie de
pa\-rá\-me\-tros y
en función de ellos el proceso busca y devuelve una serie de expertos. La 
información de la consulta muestra los proyectos en los cuales están 
involucrados en ese momento, y algunas características de dichos proyectos, cómo
las fechas de entrega y de finalización.

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps4.1}

\subsection{Búsqueda expertos}
Es una búsqueda detallada a petición del adjunto. El adjunto busca los datos de 
expertos que estén relacionados con el proyecto a evaluar. Se introducen los 
parámetros de búsqueda y el programa devuelve una lista. Ésta lista puede ser 
vacía o puede mostrar un conjunto de expertos que tiene relación con los 
prerrequisitos establecidos, ordenándolos por la valoración que tengan, que no 
pertenezcan a la asociación convocante y que sean de su área.

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps4.2}

\subsection{Invitación expertos}
Una vez listados los expertos, el adjunto selecciona a uno o varios 
de la lista. El proceso les manda un correo de invitación para participar en la 
evaluación de un proyecto. El correo de invitación se escoge de una serie de 
plantillas y se rellena con algunos datos del proyecto (el experto no puede 
tener toda la información del proyecto hasta que acepte la invitación). El 
experto seleccionado tiene una fecha límite para responder a dicho correo. Si el
experto no contesta, la invitación se toma como rechazada.

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps4.3}

\subsection{Aceptar invitación experto}
En este punto es donde la respuesta del experto es procesada. Cuando un experto 
acepta la invitación se genera automáticamente una relación entre el proyecto y 
el experto. De esta forma el experto tiene acceso a todos los datos del 
proyecto. En este proceso también se actualiza el estado del proyecto.

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps4.4}

\subsection{Desasignar experto / Rechazar informe}
Este proceso se invoca cuando algún experto está consumiendo más tiempo del 
fijado a priori y el adjunto decide desasignar al experto del proyecto. Se 
elimina la relación expertos-proyectos y su informe de evaluación.

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps4.5}

\subsection{Aviso de plazos}
El adjunto avisa al experto de la fecha límite para realizar la evaluación del 
proyecto, la fecha en la que se lo asignaron y los tiempos predefinidos en el 
proyecto.

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps4.6}

\subsection{Valorar expertos}
Una vez finalizado el informe de evaluación, el adjunto lo lee y examina con la 
finalidad de valorar el trabajo realizado por el experto. El adjunto manda al
sistema una valoración y este lo incluye en la instancia correspondiente del 
experto y el proyecto.

\subsubsection{Pseudocódigo}
\lstinputlisting{ps/ps4.7}

\chapter{Diagrama Entidad/Interrelación}
El modelo entidad/interrelación es el modelo conceptual más utilizado para el 
diseño conceptual de bases de datos.

Es un modelo de red que describe la distribución de los datos almacenados en un 
sistema de forma abstracta. La abstracción busca las propiedades comunes de un 
conjunto de objetos reduciendo la complejidad y ayudando a entender el mundo 
real. Se pretende \emph{visualizar} los objetos que pertenecen a la
\emph{base de 
datos} como entidades que tienen unos atributos y se vinculan mediante 
relaciones.

\newpage
\imagen{diagramas/ER.pdf}{14.5cm}{Diagrama Entidad/Interrelación}{}{}

\part{Diseño del sistema}
\chapter{Diagrama de diseño estructurado}
\imagen{diagramas/DE_1.pdf}{15cm}{Gestión distribuida 
  de la revisión de Proyectos de Investigación}{}{H} 

\begin{sidewaystable}
\imagen{diagramas/DE_2.pdf}{20cm}{Gestión de Usuarios}{}{H}
\end{sidewaystable}

\begin{sidewaystable}
\imagen{diagramas/DE_3.pdf}{20cm}{Gestión de Paquetes de Proyectos}{}{H}
\end{sidewaystable}

\begin{sidewaystable}
\imagen{diagramas/DE_4.pdf}{20cm}{Gestión de Evaluaciones}{}{H}
\end{sidewaystable}

\begin{sidewaystable}
\imagen{diagramas/DE_5.pdf}{20cm}{Gestión de modelos}{}{H}
\end{sidewaystable}

\begin{sidewaystable}
\imagen{diagramas/DE_6.pdf}{20cm}{Gestión de Informes de Evaluaciones}{}{H}
\end{sidewaystable}

\begin{sidewaystable}
\imagen{diagramas/DE_7.pdf}{20cm}{Gestión de Expertos}{}{H}
\end{sidewaystable}

\chapter{Diagrama relacional}
Es el modelo más utilizado en la actualidad para modelar problemas reales y 
administrar datos dinámicamente.

Se trata de un modelo lógico, que establece una
estructura sobre los datos, aunque posteriormente éstos puedan ser almacenados 
de múltiples formas para aprovechar características físicas concretas de la 
máquina sobre la que se implante la base de datos realmente.

\newpage
\imagen{diagramas/MRE.pdf}{15cm}{Diagrama Relacional}{}{}

\part{Implementación}
\chapter{Manual de usuario}
\section{Introducción}
La Gestión Distribuída de la Revisión de Proyectos de Investigación es una
aplicación web que incluye todo lo necesario para conseguir una comunicación 
activa entre el usuario y la información que puede manejar. Cada usuario podrá 
manejar diferentes acciones según el rango que tenga en la empresa (secretario,
coordinador, adjunto o experto).

La implementación de la práctica incluye todo lo relacionado con la gestión de
las e\-va\-lua\-cio\-nes. Entre las diferentes posibilidades de la aplicación se
encuentran: la realización de modelos de evaluación, la realización de informes
de evaluación, la modificación de informes de evaluación, la eliminación de 
informes de evaluación, la consulta de informes de evaluación y el envío de 
informes de evaluación a la institución convocante.

\section{Inicio de sesión}
La pantalla de inicio de la aplicación se puede observar en la figura
\ref{img1}.

\imagen{acceso.pdf}{13cm}{\small{Acceso a la aplicación.}}{img1}{}

\begin{itemize}
\item Se introduce el usuario y la contraseña proporcionados en el correo de 
alta (figura \ref{img2}).

\imagen{introducirdatos.pdf}{4cm}{\small{Datos del usuario.}}{img2}{}

\item Si los datos son incorrectos, no se puede acceder a la aplicación y se
  muestra un mensaje de error. 
\end{itemize}

La página inicial para cada tipo de usuario muestra la información 
co\-rres\-pon\-dien\-te a las funciones que puede realizar con respecto a las 
evaluaciones de informes.


\section{Secretario}
\subsection{Crear un modelo de evaluación}
\begin{enumerate}
\item Pulsar ``Añadir'' para agregar un nuevo modelo de evaluación, como se 
  puede ver en la figura \ref{sc1}. Se despliegan los datos que se pueden 
  introducir en un modelo de evaluación.
  
  \imagen{anadirmod.pdf}{10cm}{Añadir modelo de evaluación.}{sc1}{}

\item Ver convocatoria de un paquete de proyectos.
  \begin{itemize}
  \item En la sección CONVOCATORIAS se despliega una lista (figura \ref{sc2}) 
    donde se puede elegir el paquete de proyectos del que se desea ver la 
    convocatoria.

    \imagen{convmod.pdf}{10cm}{\small{Elección de paquete de
        proyectos.}}{sc2}{}

  \item Se elige un paquete de proyectos y se pulsa ``Ver''. A la derecha de la 
    página se muestra la información de la convocatoria (figura \ref{sc3}).

    \imagen{convmostrada.pdf}{13cm}{\small{Información de
        convocatoria.}}{sc3}{}  
  \end{itemize}

\item Agregar los tipos de elementos de la sección FORMULARIOS pulsando 
  ``Añadir'', como se puede observar en la figura \ref{sc4}. En la sección 
  \emph{Estructura} se muestra el resultado del modelo de evaluación que se
  está creando.

  \imagen{formularios.pdf}{4cm}{\small{Opciones de modelos de
      evaluación.}}{sc4}{} 

\item Guardar el modelo de evaluación realizado. Para ello se pulsa el botón 
  ``Guardar'' que está situado al final de la sección FORMULARIOS.
\end{enumerate}

\subsection{Modificar o eliminar un modelo de evaluación}
Se marca el paquete de la convocatoria que se desea modificar y se pulsa 
``Modificar'' o ``Eliminar'' según se desee (figura \ref{img7}).
\imagen{modifmod.pdf}{14cm}{\small{Modificación y eliminación de un modelo.}}
{img7}{}

\section{Coordinador}
La pantalla principal del coordinador muestra las posibles acciones a realizar 
(figura \ref{c1}).
\imagen{corprinc.pdf}{13cm}{\small{Ventana Principal del coordinador.}}{c1}{}

\subsection{Ver/Modificar informe final}
\begin{enumerate}
\item Se seleccionar el proyecto deseado de entre los disponibles (figura 
  \ref{c2}). Los proyectos asignados se muestran en una tabla.
  
  \imagen{selcor.pdf}{13cm}{\small{Selección de proyecto.}}{c2}{}

\item Para consultar o modificar el informe final, pulsar 
  ``Ver/Modificar informe'' y se expande el correspondiente modelo de 
  evaluación (figura \ref{c3}).

  \imagen{modinf.pdf}{13cm}{\small{Ver/modificar el informe final.}}{c3}{}

\item El botón ``Guardar'' permite guardar los cambios y editar en 
  posteriores sesiones, mientras que el botón ``Finalizar'' dar por finalizado 
  el informe (figura \ref{c4}).
  
  \imagen{opcor.pdf}{13cm}{\small{Guardar o finalizar informe final.}}{c4}{}
\end{enumerate}

\subsection{Validar informe final}
Se selecciona el proyecto deseado y se pulsa ``Validar informe final'', como se 
puede ver en la figura \ref{c5}.
\imagen{valinf.pdf}{13cm}{\small{Validación informe final.}}{c5}{}

\section{Adjunto}
La pantalla de inicio correspondiente se puede ver en la figura \ref{a1}.
\imagen{adjprinc.pdf}{13cm}{\small{Ventana Principal del adjunto.}}{a1}{}

\subsection{Realizar informe final}
\begin{enumerate}
\item Se selecciona el proyecto deseado de entre los disponibles (figura 
  \ref{a2}). Los proyectos asignados se muestran en una tabla.
  
  \imagen{seladj.pdf}{13cm}{\small{Selección de proyecto.}}{a2}{}

\item Pulsando la opción ``+'', que aparece en la columna Exps, se puede ver que
  expertos han realizado evaluaciones sobre el proyecto, como se puede ver en
  la figura \ref{a3}. 

  \imagen{listaexp.pdf}{13cm}{\small{Expertos del proyecto seleccionado.}}{a3}{}

\item Pulsando el icono de consulta, se puede acceder a la evaluación realizada 
  por cada uno de los expertos (figura \ref{a4}).

  \imagen{coneval.pdf}{13cm}{\small{Consulta evaluación.}}{a4}{}

\item Para realizar el informe final, se pulsa ``Realizar informe'' 
  para que se expanda el correspondiente modelo de evaluación (figura \ref{a5}).
  
  \imagen{inffinal.pdf}{13cm}{\small{Realización informe final.}}{a5}{}

\item El adjunto puede ``Guardar'' o ``Finalizar informe'' 
  (figura \ref{a6}), el primero nos permite guardar los cambios y editar en 
  posteriores sesiones, mientras que el segundo finaliza el informe.
  
  \imagen{opinf.pdf}{13cm}{\small{Guardar o finalizar informe final.}}{a6}{}
\end{enumerate}

\section{Experto}
\subsection{Realizar evaluación de un proyecto}
\begin{enumerate}
\item Los proyectos asignados se muestran en una tabla. Para realizar la 
  evaluación de un proyecto, se marca y se pulsa ``Realizar evaluación''
  (figura \ref{img8}). 

  \imagen{realizareval.pdf}{13cm}{\small{Elegir proyecto para
      evaluación.}}{img8}{} 

\item Se expande el correspondiente modelo de evaluación, mostrando los 
  diferentes puntos a evaluar. En la parte izquierda de la pantalla se
  muestra la memoria de dicho proyecto, como se puede ver en la figura
  \ref{img9}. 

  \imagen{evalexp.pdf}{13cm}{\small{Realización de evaluación.}}{img9}{}

\item Se guardan los cambios realizados en la evaluación con el botón 
  ``Guardar'' o se finaliza la evaluación pulsando ``Finalizar'' (figura 
  \ref{img10}).
  
  \imagen{saveend.pdf}{4cm}{\small{Guardar o finalizar evaluación.}}{img10}{}
\end{enumerate}

\chapter{Implementación}
\section{Introducción}
Para llegar a este punto de la práctica, se han seguido una serie de pautas de
planificación y diseño para conseguir una implementación eficiente y viable.
Con el objetivo de cumplir las necesidades del cliente se han utilizado los
siguientes lenguajes:
\begin{itemize}
\item PHP\cite{achour}: lenguaje de cuarta generación que genera páginas de cara
al servidor.
\item XHTML\cite{wc}: encargado de la información y la estructura de la página.
\item MySQL: se utiliza en el diseño e implementación de la base de datos.
\item CSS\cite{wc}: encargado de la maquetación y el estilo del modelado.
\item JavaScript\cite{resig}: empleado en el \emph{framework jQuery} da 
dinamismo al navegador.
\end{itemize} 
El objetivo es conocer el ámbito de aplicación de los servicios web, comprender 
y diseñar arquitecturas orientadas a servicios. Además, conocer los estándares y
los organismos de estandarización, conocer y aplicar técnicas de modelado y 
especificación de procesos, y servicios web complejos.

\section{Código fuente}
\subsection{index.php}
\lstinputlisting[language=PHP]{implementacion/index.php}

\subsection{settings.php}
\lstinputlisting[language=PHP]{implementacion/settings.php}

\subsection{js/evalmodels.js}
\lstinputlisting[language=PHP]{implementacion/js/evalmodels.js}

\subsection{js/evalreports.js}
\lstinputlisting[language=PHP]{implementacion/js/evalreports.js}

\subsection{js/main.js}
\lstinputlisting[language=PHP]{implementacion/js/main.js}

\subsection{js/projects.js}
\lstinputlisting[language=PHP]{implementacion/js/projects.js}

\subsection{source/evaluation\_models.php}
\lstinputlisting[language=PHP]{implementacion/source/evaluation_models.php}

\subsection{source/evaluation\_reports.php}
\lstinputlisting[language=PHP]{implementacion/source/evaluation_reports.php}

\subsection{source/loginout.php}
\lstinputlisting[language=PHP]{implementacion/source/loginout.php}

\subsection{source/mysql.php}
\lstinputlisting[language=PHP]{implementacion/source/mysql.php}


\subsection{theme/evaluation\_models.php}
\lstinputlisting[language=PHP]{implementacion/theme/evaluation_models.php}

\subsection{theme/evaluation\_reports.php}
\lstinputlisting[language=PHP]{implementacion/theme/evaluation_reports.php}

\subsection{theme/login.php}
\lstinputlisting[language=PHP]{implementacion/theme/login.php}

\subsection{theme/main.php}
\lstinputlisting[language=PHP]{implementacion/theme/main.php}

\subsection{theme/projects.php}
\lstinputlisting[language=PHP]{implementacion/theme/projects.php}

\subsection{theme/users.php}
\lstinputlisting[language=PHP]{implementacion/theme/users.php}

\subsection{theme/css/evalmodels.css}
\lstinputlisting[language=PHP]{implementacion/theme/css/evalmodels.css}

\subsection{theme/css/evalreports.css}
\lstinputlisting[language=PHP]{implementacion/theme/css/evalreports.css}

\subsection{theme/css/login.css}
\lstinputlisting[language=PHP]{implementacion/theme/css/login.css}

\subsection{theme/css/main.css}
\lstinputlisting[language=PHP]{implementacion/theme/css/main.css}

\subsection{theme/css/users.php}
\lstinputlisting[language=PHP]{implementacion/theme/css/users.php}

\appendix
\chapter{Carga de trabajo}
\begin{center}
  \begin{tabular}{p{10cm}|c}
    \textbf{Apellidos y Nombre} & \textbf{Porcentaje} \\ \hline \hline
    de la Rubia García-Carpintero, Sergio & 20\% \\
    Millán Sánchez-Grande, Miguel         & 20\% \\ 
    Muñoz Villarreal, Luis                & 20\% \\ 
    Serrano Sánchez, Alicia               & 20\% \\ 
    Torres Triviño, Juan Miguel           & 20\% \\
  \end{tabular}
\end{center}

\bibliographystyle{plain} 
\bibliography{iso1}

\end{document}
